<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>

        // function f1(x,y){
        //     console.log((x+y)+'------>'+this)
        // }

        // // 复制了一份的时候，把参数传入到了f1函数中，x===》10，y===》20，null就是this，默认就是window
        // // bind方法就是复制的意思，参数可以在复制的时候传入进去，也可以在复制之后调用的时候传入进去
        // // apply和call是调用的时候改变this指向
        // //bind方法，是复制一份的时候，改变了this的指向

        // // var ff = f1.bind(null,10,20);
        // // ff()
        // function Person(age){
        //     this.age = age
        // }
        // Person.prototype.play = function(){
        //     console.log(this+'=====>'+this.age)
        // }

        // function Student(age){
        //     this.age = age
        // }
        // var per = new Person(10)
        // var stu = new Student(20)

        // var ff = per.play.bind(stu)
        // ff()

        // bind是用来复制一份的
        // 使用的语法：
        /*
            函数名称.bind(对象，参数一，参数二，...)；===》返回值是复制之后的这个函数
            方法名字.bind(对象，参数一，参数二，...)；===》返回值是复制之后的这个方法            
        */

         // 使用
         // 通过对象调用方法，产生随机数
         function ShowRandom(){
             // 1到10的随机数             
             this.number = parseInt(Math.random()*10+1);
         }   
         // 添加原型方法
         ShowRandom.prototype.show1 = function(){
             // 改变了定时器中的this的指向，本来应该是window对象
             window.setInterval(this.show2.bind(this),1500)
         }
         ShowRandom.prototype.show2 = function(){            
             //显示随机数 -- 
             console.log(this.number);
             this.number = parseInt(Math.random()*10+1);
         }
         var sr = new ShowRandom()
         //调用方法，输出随机数,

         sr.show1()
    


    </script>
</body>
</html>